package com.io;

import java.io.*;

public class CopyDemo4 {
    public static void main(String[] args) throws IOException {
        // 创建一个FileInputStream对象，用于从指定文件（本例为"./img.png"）中读取数据
        FileInputStream fis = new FileInputStream("./img.png");

        // 将FileInputStream包装在一个BufferedInputStream中，提高数据读取效率，减少磁盘I/O操作次数
        BufferedInputStream bis = new BufferedInputStream(fis);

        // 创建一个FileOutputStream对象，用于向指定文件（本例为"img_3.png"）写入数据
        FileOutputStream fos = new FileOutputStream("img_3.png");

        // 将FileOutputStream包装在一个BufferedOutputStream中，提高数据写入效率，减少磁盘I/O操作次数
        BufferedOutputStream bos = new BufferedOutputStream(fos);

        // 定义一个整型变量d，用于暂存每次读取到的单个字节
        int d;

        // 使用while循环，从源文件中逐字节读取数据，直到读取结束（返回值为-1）
        while ((d = bis.read()) != -1) {
            // 将读取到的字节写入目标文件
            bos.write(d);
        }

        // 输出提示信息，表明文件复制操作已完成
        System.out.println("复制完成");

        // 关闭输入和输出流，释放系统资源并确保所有数据已成功复制
        bis.close();
        bos.close();

    }
}
